/**
 * ____________________ *
 *  ____ ____ ____ _  _ *
 *  |___ [__] |--< |\/| *
 * ____________________ *
 *
 * THE CORM PROJECT
 *
 * This file may only be used in accordance with the
 * terms of the Academic Free License ("AFL") v. 3.0,
 * as published by the Open Software Initiative.  A
 * copy of this license is provided in this source
 * release, and may be viewed online at:
 *
 * (http://www.opensource.org/licenses/afl-3.0.php)
 */
package org.eremite.corm.product;

import org.eremite.corm.Archetype;

import javax.measure.quantity.Quantity;
import javax.measure.unit.BaseUnit;
import java.util.Set;

public class ProductType extends Archetype implements Quantity {
    private long id;
    private Set<ProductFeatureType> mandatoryFeatureTypes;
    private Set<ProductFeatureType> optionalFeatureTypes;
    private Set<ProductRelationship> productRelationships;

    /**
     * Holds the base unit for money quantities (symbol "TM", the product trademark symbol).
     */
    public final static BaseUnit<ProductType> BASE_UNIT = new BaseUnit<ProductType>("TM");

    public long getID() {
        return id;
    }

    public void setID(long id) {
        this.id = id;
    }

    public Set<ProductFeatureType> getMandatoryFeatureTypes() {
        return mandatoryFeatureTypes;
    }

    public void setMandatoryFeatureTypes(Set<ProductFeatureType> mandatoryFeatureTypes) {
        this.mandatoryFeatureTypes = mandatoryFeatureTypes;
    }

    public Set<ProductFeatureType> getOptionalFeatureTypes() {
        return optionalFeatureTypes;
    }

    public void setOptionalFeatureTypes(Set<ProductFeatureType> optionalFeatureTypes) {
        this.optionalFeatureTypes = optionalFeatureTypes;
    }

    public Set<ProductRelationship> getProductRelationships() {
        return productRelationships;
    }

    public void setProductRelationships(Set<ProductRelationship> productRelationships) {
        this.productRelationships = productRelationships;
    }
}
